/****************************************************************************
 * @file bl_memcmp.c
 * @brief this module is used to bl_memcmp
 * @version 0.0.1
 * @date 2022-06-17
 *
 * @copyright Copyright(C) 2021-2022 Tuya Inc. All Rights Reserved.
 ****************************************************************************/

/****************************************************************************
 * Included Files
 ****************************************************************************/

#include "tuya_boot.h"
#include "utils.h"

/****************************************************************************
 * Pre-processor Definitions
 ****************************************************************************/

/****************************************************************************
 * Private Type Declarations
 ****************************************************************************/

/****************************************************************************
 * Private Data Declarations
 ****************************************************************************/

/****************************************************************************
 * Private Functions
 ****************************************************************************/

/****************************************************************************
 * Public Function Prototypes
 ****************************************************************************/

int bl_memcmp(const void *s1, const void *s2, size_t n)
{
    uint32_t i;

    if (s1 == NULL && s2 == NULL)
        return 0;
    else if (s1 == NULL)
        return 1;
    else if (s2 == NULL)
        return -1;

    const uint8_t *b1 = s1;
    const uint8_t *b2 = s2;

    for (i = 0; i < n; i++) {
        if (b1[i] < b2[i])
            return -1;
        else if (b1[i] > b2[i])
            return 1;
    }

    return 0;
}


